Generally, where multiple automated systems are used for a common operation, each robotic system is programmed with an explicit set of instructions for performing the common operation. For example, multiple automated systems are often used to perform an assembly task where the multiple automated systems cooperate with each other to perform the assembly task. Generally, a supervisory controller is used where the supervisory controller is programmed with all of the instructions for all of the multiple automated systems and dispatches the instructions to each of the multiple automated systems. The supervisory controller coordinates the execution of the instructions to keep the automated systems synchronized however, the supervisory controller adds a layer of complexity to the automated system without decreasing an amount of programming needed to operate the automated system.
Generally, where a supervisory controller is not used, detailed programs are written for each operation of each of the multiple automated systems where the respective detailed programs synchronize the operations of one automated system with another automated system. This approach requires extensive programming and if something happens where one automated system fails to perform a task, there is no simple way for the other automated systems to change their programming to accommodate the failure. For example, if one robot is programmed to drill a hole and install a bolt into the hole but fails to do so, another robot that is supposed to install a nut onto the bolt may then try and install the nut in accordance with the other robots programming. The attempt to install the nut would generate an error because there is no bolt to receive the nut.
In both cases, i.e. where the supervisory controller is used and where detailed programs are written for each automated system, it takes considerable effort to program all of the actions of each automated system, and then ensure that the actions between the automated systems are synchronized. Further, in conventional automated systems where multiple automated systems are used for a common operation, if the programming for one of the automated system is changed the programming for the other cooperating automated systems must be rewritten accordingly (e.g. the cooperating automated systems must be explicitly reprogrammed to match the new instructions) which takes additional effort and time, which in turn contributes to increased down-time (e.g. time the multiple automated systems are not in use) and decreased production.